<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * CodeIgniter
 *
 * An open source application development framework for PHP 5.1.6 or newer
 *
 * @package		CodeIgniter
 * @author		ExpressionEngine Dev Team
 * @copyright	Copyright (c) 2008 - 2011, EllisLab, Inc.
 * @license		http://codeigniter.com/user_guide/license.html
 * @link		http://codeigniter.com
 * @since		Version 1.0
 * @filesource
 */

// ------------------------------------------------------------------------

/**
 * CodeIgniter Application Controller Class
 *
 * This class object is the super class that every library in
 * CodeIgniter will be assigned to.
 *
 * @package		CodeIgniter
 * @subpackage	Libraries
 * @category	Libraries
 * @author		ExpressionEngine Dev Team
 * @link		http://codeigniter.com/user_guide/general/controllers.html
 */
class My_Controller extends CI_Controller
{
	function My_Controller()
	{
		parent::__construct();
		@session_start();
		$uri_seg_0 = $this->uri->segment(1);
		$uri_seg = $this->uri->segment(2);
		$ur_seg3 = $this->uri->segment(3);
		if ($uri_seg_0 !='message.html' && $ur_seg3 !='delete' && $ur_seg3 !='del' && $ur_seg3 !='active' && $ur_seg3 !='edit' && $ur_seg3 !='edit_order' && $ur_seg3 !='hot' && $ur_seg3 !='vip' && $ur_seg3 !='vip1' && $ur_seg3 !='vip2' && $ur_seg3 !='vip3' && $ur_seg3 != 'delete_captcha' && $ur_seg3 != 'delete_cache' && $ur_seg3 != 'load_category_2' && $ur_seg3 != 'load_category_3' && $ur_seg3 != 'load_district_search' && $ur_seg3 != 'load_cat_2' && $ur_seg3 != 'load_cat_3')
		{
			$_SESSION['last_url_admin'] = current_url();
		}
		
		if (!isset($_SESSION["guest_id"]))
		{
			
		}
		$_SESSION["guest_id"] = 1;
	}
	
	function write_log($mess, $type = "NOTICE")
	{
		$dir_path	= getcwd();
		$dir_logs	= $dir_path.'/logs';
		$current_date	= date('Ymd', time());
		$file_name	= $dir_logs.'/log_'.$current_date.'.txt';
		$fp = fopen($file_name, 'a+') or trigger_error("Can't open log file!");
		$time = @date('[d-m-Y H:i:s]');
		switch ($type)
		{
			case "DEBUG":
			case "NOTICE":
			case "ERROR":
			case "INFOR":
				$logtype = "[$type]";
				break;
			default:
				$logtype = "[NOTICE]";
		}
		fwrite($fp, "\n$time$logtype: $mess");
		fclose($fp);
	}
	
	function check_login()
	{
		if(!isset($_SESSION['admin_login']) || $_SESSION['admin_login'] == FALSE)
		{
			redirect(base_url().'administ');
		}
	}
	
	function check_logout()
	{
		@session_destroy();
		$action		= 'Thoát khỏi hệ thống';
		$this->mod_lib->insert_log($action, $_SESSION['admin_id']);
		redirect(base_url().'adminx');
	}
	
	public function permiss_admin()
	{	
		if($_SESSION['admin_id'] == 1 || $_SESSION['admin_id'] == 16)
		{
			return;
		}
		$control 	= $this->uri->segment(2);	
		$menu 		= $this->db->get_where('admin_menu', array('controller' => $control, 'cat_id !='=>0));
		if($menu->num_rows() > 0)
		{
			$m 			= $menu->row_array();
			$permiss 	= $this->db->get_where('admin_permiss', array('menu_admin_id' => $m['id'], 'access' => 1, 'admin_id' => $_SESSION['admin_id']));
			if($permiss->num_rows() > 0)
			{				
				return;
			}
			else
			{		
				echo '<script>alert("Bạn không có quyền truy cập danh mục này."); window.location = "'.base_url().'back_end/admin/index_admin"</script>';
				return;
			}
		}		
		echo '<script>alert("Bạn không có quyền truy cập danh mục này."); window.location = "'.base_url().'back_end/admin/index_admin"</script>';
		return;
	}
	
	function permiss_admin_add()
	{
		$data = array();	
		if($_SESSION['admin_id'] == 1 || $_SESSION['admin_id'] == 16)
		{
			$data['all']	= "all";
			return $data;
		}
		$control 	= $this->uri->segment(2);			
		$menu 		= $this->db->get_where('admin_menu', array('controller' => $control));
		if($menu->num_rows() > 0)
		{
			$m 			= $menu->row_array();
			$permiss 	= $this->db->get_where('admin_permiss', array('menu_admin_id' => $m['id'], 'access' => 1, 'admin_id' => $_SESSION['admin_id']));
			if($permiss->num_rows() > 0)
			{
				$per	= $permiss->row_array();							
				if($per['add']	== '1')
				{
					$data['add']	= "add";
				}
				if($per['edit']	== '1')
				{
					$data['edit']	= "edit";
				}
				if($per['del']	== '1')
				{
					$data['del']	= "del";
				}		
				return $data;
			}
		}		
	}
	
	function debug($data)
	{
		echo "<pre>";
		print_r($data);
		echo "</pre>";
		die();
	}
	
	public function check_search($arr_vaulue, $value_search, $field_name)
	{
		if (isset($value_search) && !empty($value_search))
		{
			$arr			= array($field_name => $value_search);
			$arr_return 	= array_merge($arr, $arr_vaulue);
			return $arr_return;
		}
		else 
		{
			return $arr_vaulue;
		}
	}
	
	function check_member($username_view)
	{
		$resutl   		 = $this->mod_lib->count('member', array('username'=>$username_view, 'status'=>1));
		if ($resutl != 1)
		{
			redirect(base_url());				
		}			
	}
	
	function check_username($username, $users_taken) 
	{
		$username = trim($username); // strip any white space
		$response = array(); // our response
		
		// nếu chưa nhập username
		if (!$username) 
		{
			$response = array(
				'ok' => FALSE, 
				'msg' => '<input type="hidden" name="check_username" id="check_username" value="1"><font color=red>Username có chứa ký tự đặc biệt</font>'
			);			
		}
		else if (strlen($username) < 6) 
		{
			$response = array(
				'ok' => FALSE, 
				'msg' => '<font color=red><input type="hidden" name="check_username" id="check_username" value="1">Username phải có ít nhất 6 ký tự.</font>'
			);			
		}
		// nếu username không có các giá trị a-z or '.', '-', '_' thì nó not valid
		else if (!preg_match('/^[a-z0-9.-_]+$/', $username)) 
		{
			$response = array(
				'ok' => FALSE, 
				'msg' => '<font color=red><input type="hidden" name="check_username" id="check_username" value="1">Username chỉ có thể chứa "." gạch ngang, và ký tự gạch dưới (.-_)</font>'
			);			
		}
		// nếu username đã có người sử dụng, ở đây giả sử là hàm username_taken()
		else if (in_array("$username", $users_taken)) 
		{
			$response = array(
				'ok' => FALSE, 
				'msg' => '<font color=red><input type="hidden" name="check_username" id="check_username" value="1">Username đã có người sử dụng</font>'
			);						
		}
		// everything okay
		else 
		{
			$response = array(
				'ok' => TRUE, 
				'msg' => "<font color=#090>Bạn có thể sử dụng username này!</font>"
			);
		}		
		return $response;     	  
	}
	
	function check_email($email, $email_taken) 
	{
		$email = trim($email);
		$response = array();
		if (!$email) 
		{
			$response = array(
				'ok' => FALSE, 
				'msg' => '<input type="hidden" name="check_email" id="check_email" value="1"><font color=red><br>Email có chứa ký tự đặc biệt</font>'
			);
		} 
		else if (strlen($email) < 6) 
		{
			$response = array(
				'ok' => FALSE, 
				'msg' => '<font color=red><input type="hidden" id="check_email" name="check_email" value="1">Email phải có ít nhất 6 ký tự.</font>'
			);
		// nếu username không có các giá trị a-z or '.', '-', '_' thì nó not valid
		}
		else if (!preg_match('/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/', $email)) 
		{
			$response = array(
				'ok' => FALSE, 
				'msg' => '<font color=red><input type="hidden" id="check_email" name="check_email" value="1">Bạn nhập không đúng email</font>'
			);			
		// nếu username đã có người sử dụng, ở đây giả sử là hàm username_taken()
		}
		else if (in_array("$email", $email_taken)) 
		{
			$response = array(
				'ok' => FALSE, 
				'msg' => '<font color=red><input type="hidden" id="check_email" name="check_email" value="1">Email đã được sử dụng. <a href="'.base_url().'quen-mat-khau.html">Bạn quên mật khẩu</a></font>'
			);			
		// everything okay
		} 
		else
		{
			$response = array(
				'ok' => TRUE, 
				'msg' => "<font color=#090>Bạn có thể sử dụng email này!</font>"
			);
		}
		return $response; 
	}
	
	function check_email_forgotpass($email, $email_taken) 
	{
		$email = trim($email);
		$response = array();
		if (!$email) {
			$response = array(
			'ok' => FALSE, 
			'msg' => '<input type="hidden" name="check_email" id="check_email" value="1"><font color=red><br>Email có chứa ký tự đặc biệt</font>');
			
		} else if (strlen($email) < 6) {
			$response = array(
			'ok' => FALSE, 
			'msg' => '<font color=red><input type="hidden" id="check_email" name="check_email" value="1">Email phải có ít nhất 6 ký tự.</font>');
			
			// nếu username không có các giá trị a-z or '.', '-', '_' thì nó not valid
		} else if (!preg_match('/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/', $email)) {
			$response = array(
			'ok' => FALSE, 
			'msg' => '<font color=red><input type="hidden" id="check_email" name="check_email" value="1">Bạn nhập không đúng email</font>');
			
			// nếu username đã có người sử dụng, ở đây giả sử là hàm username_taken()
		} else if (in_array("$email", $email_taken)) {
			$response = array(
			'ok' => FALSE, 
			'msg' => '<font color=#090>Email tồn tại trong hệ thống !</font>');
			
			// everything okay
		} else {
			$response = array(
			'ok' => TRUE, 
			'msg' => '<font color=red><input type="hidden" id="check_email" name="check_email" value="1">Email này không tồn tại trong hệ thống !</font>');
		}
		return $response; 
	}
	
	public function utf8_to_ascii($str) 
	{
		
		$str = preg_replace("/(ấ|ầ|ẩ|ẫ|ậ|Ấ|Ầ|Ẩ|Ẫ|Ậ|ắ|ằ|ẳ|ẵ|ặ|Ắ|Ằ|Ẳ|Ẵ|Ặ|á|à|ả|ã|ạ|â|ă|Á|À|Ả|Ã|Ạ|Â|Ă|A)/", 'a', $str);
		$str = preg_replace("/(ế|ề|ể|ễ|ệ|Ế|Ề|Ể|Ễ|Ệ|é|è|ẻ|ẽ|ẹ|ê|É|È|Ẻ|Ẽ|Ẹ|Ê|E)/", 'e', $str);
		$str = preg_replace("/(í|ì|ỉ|ĩ|ị|Í|Ì|Ỉ|Ĩ|Ị|I)/", 'i', $str);
		$str = preg_replace("/(ố|ồ|ổ|ỗ|ộ|Ố|Ồ|Ổ|Ô|Ộ|ớ|ờ|ở|ỡ|ợ|Ớ|Ờ|Ở|Ỡ|Ợ|ó|ò|ỏ|õ|ọ|ô|ơ|Ó|Ò|Ỏ|Õ|Ọ|Ô|Ơ|O)/", 'o', $str);
		$str = preg_replace("/(ứ|ừ|ử|ữ|ự|Ứ|Ừ|Ử|Ữ|Ự|ú|ù|ủ|ũ|ụ|ư|Ú|Ù|Ủ|Ũ|Ụ|Ư|U)/", 'u', $str);
		$str = preg_replace("/(ý|ỳ|ỷ|ỹ|ỵ|Ý|Ỳ|Ỷ|Ỹ|Ỵ|Y)/", 'y', $str);
		$str = preg_replace("/(đ|Đ|D)/", 'd', $str);
		$str = preg_replace("/(B)/", 'b', $str);
		$str = preg_replace("/(C)/", 'c', $str);
		$str = preg_replace("/(F)/", 'f', $str);
		$str = preg_replace("/(G)/", 'g', $str);
		$str = preg_replace("/(H)/", 'h', $str);
		$str = preg_replace("/(J)/", 'j', $str);
		$str = preg_replace("/(K)/", 'k', $str);
		$str = preg_replace("/(L)/", 'l', $str);
		$str = preg_replace("/(M)/", 'm', $str);
		$str = preg_replace("/(N)/", 'n', $str);
		$str = preg_replace("/(P)/", 'p', $str);
		$str = preg_replace("/(Q)/", 'q', $str);
		$str = preg_replace("/(S)/", 's', $str);
		$str = preg_replace("/(R)/", 'r', $str);
		$str = preg_replace("/(V)/", 'v', $str);
		$str = preg_replace("/(T)/", 't', $str);
		$str = preg_replace("/(X)/", 'x', $str);
		$str = preg_replace("/(Z)/", 'z', $str);
		$str = preg_replace("/(W)/", 'w', $str);
		$str = str_replace(" ","-", str_replace("&*#39;","",$str));
		return $str;
	}
	
	function title_website()
	{
		$query_title	= $this->mod_lib->load_all('configs', 'name_web', array(), '', '', array());
		return $query_title[0]['name_web'];
	}
	
	public function lock_website()
	{
		$query_lock	= $this->db->get('configs')->row_array();
		if ($query_lock['lock_web'] == 0)
		{
			return;
		}
		else 
		{
			if (!empty($query_lock['message']))
			{
				echo '<html>
				<head>
				<title>'.$query_lock['message'].'</title>
				</head>
				<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
				<body>
				
				<p style="text-align: center; margin-top: 30px;">'.$query_lock['message'].'</p>
				
				</body>
				</html>';
			}
			else
			{
				echo '<html>
				<head>
				<title>Website đang trong quá trình nâng cấp. Xin quý khách truy cập sau !</title>
				</head>
				<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
				<body>
				
				<p style="text-align: center; margin-top: 30px;">Website đang trong quá trình nâng cấp. Xin quý khách truy cập sau !</p>
				
				</body>
				</html>';
			}
			//echo $query_lock['message'];
			die();
		}
		//return $query_title[0]['lock_web'];
	}
	
	function thumb($img, $w, $h, $fill = true) 
	{
		if (!extension_loaded('gd') && !extension_loaded('gd2')) {
			trigger_error("No dispones de la libreria GD para generar la imagen.", E_USER_WARNING);
			return false;
		}
		
		$imgInfo = getimagesize($img);
		switch ($imgInfo[2]) {
			case 1: $im = imagecreatefromgif($img); break;
			case 2: $im = imagecreatefromjpeg($img);  break;
			case 3: $im = imagecreatefrompng($img); break;
			default:  trigger_error('Tipo de imagen no reconocido.', E_USER_WARNING);  break;
		}
		
		if ($imgInfo[0] <= $w && $imgInfo[1] <= $h && !$fill) {
			$nHeight = $imgInfo[1];
			$nWidth = $imgInfo[0];
            }else{
			if ($w/$imgInfo[0] < $h/$imgInfo[1]) {
				$nWidth = $w;
				$nHeight = $imgInfo[1]*($w/$imgInfo[0]);
				}else{
				$nWidth = $imgInfo[0]*($h/$imgInfo[1]);
				$nHeight = $h;
			}
		}
		
		$nWidth = round($nWidth);
		$nHeight = round($nHeight);
		
		$newImg = imagecreatetruecolor($nWidth, $nHeight);
		
		imagecopyresampled($newImg, $im, 0, 0, 0, 0, $nWidth, $nHeight, $imgInfo[0], $imgInfo[1]);
		
		header("Content-type: ". $imgInfo['mime']);
		
		switch ($imgInfo[2]) {
			case 1: imagegif($newImg); break;
			case 2: imagejpeg($newImg);  break;
			case 3: imagepng($newImg); break;
			default:  trigger_error('Imposible mostrar la imagen.', E_USER_WARNING);  break;
		}
		
		imagedestroy($newImg);
	}
	
	public function replace($str)
	{
		$str1 = strtolower($this->utf8_to_ascii($str));
		$str2 = str_replace(array(' ', '~', '`', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '+', '=', '{', '}', '[', ']', '|', ':', ';', '"','<', '>', '?', '/', ',', '//', '“', '”'), '_', $str1);
		return $str2;
	}
	
	public function replace2($str)
	{
		$str1 = strtolower($this->utf8_to_ascii($str));
		$str2 = str_replace(array(' ', '~', '`', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '+', '=', '{', '}', '[', ']', '|', ':', ';', '"','<', '>', '?', '/', ',', '//', '“', '”'), '-', $str1);
		return $str2;
	}
	
	public function createThumb($img_file, $ori_path, $thumb_path, $img_type) {
		
		// get the image source
		$path = $ori_path;
		$img = $path.$img_file;
		switch ($img_type) {
			case "image/pjpeg":
			$img_src = @imagecreatefromjpeg($img);
			break;
			case "image/jpeg":
			$img_src = @imagecreatefromjpeg($img);
			break;
			case "application/x-shockwave-flash":
			$img_src = "flash";
			break;
			case "image/jpg":
			$img_src = @imagecreatefromjpeg($img);
			break;
			case "image/gif":
			$img_src = @imagecreatefromgif($img);
			break;
			case "image/png":
			$img_src = @imagecreatefrompng($img);
			break;
		}
		$img_width 	= imagesx($img_src);
		$img_height = imagesy($img_src);
		
		$square_size = 120;
		
		// check width, height, or square
		if ($img_width == $img_height) 
		{
			// square
			$tmp_width 	= $square_size;
			$tmp_height = $square_size;
		} else if ($img_height < $img_width) 
		{
			// wide
			$tmp_height = $square_size;
			$tmp_width = intval(($img_width / $img_height) * $square_size);
			$tmp_width++;		        
		} else if ($img_height > $img_width) 
		{
			$tmp_width = $square_size;
			$tmp_height = intval(($img_height / $img_width) * $square_size);
			$tmp_height++;
			
		}
		
		$img_new = imagecreatetruecolor($tmp_width, $tmp_height);
		imagecopyresampled($img_new, $img_src, 0, 0, 0, 0, $tmp_width, $tmp_height, $img_width, $img_height);
		
		// create temporary thumbnail and locate on the server
		$thumb = $thumb_path."thumb_".$img_file;
		switch ($img_type) {
			case "image/pjpeg":
			imagejpeg($img_new, $thumb);
			break;
			case "image/jpeg":
			imagejpeg($img_new, $thumb);
			break;
			case "image/jpg":
			imagejpeg($img_new, $thumb);
			break;
			case "image/png":
			imagejpeg($img_new, $thumb);
			break;
			case "image/gif":
			imagegif($img_new, $thumb);
			break;
		}
		
		// get tmp_image
		switch ($img_type) {
			case "image/pjpeg":
			$img_thumb_square = imagecreatefromjpeg($thumb);
			break;
			case "image/jpeg":
			$img_thumb_square = imagecreatefromjpeg($thumb);
			break;
			case "image/jpg":
			$img_thumb_square = imagecreatefromjpeg($thumb);
			break;
			case "image/png":
			$img_thumb_square = imagecreatefrompng($thumb);
			break;
			case "image/gif":
			$img_thumb_square = imagecreatefromgif($thumb);
			break;
		}
		
		$thumb_width 	= imagesx($img_thumb_square);
		$thumb_height 	= imagesy($img_thumb_square);
		
		if ($thumb_height < $thumb_width) {
			// wide
			$x_src = ($thumb_width - $square_size) / 2;
			$y_src = 0;
			$img_final = imagecreatetruecolor($square_size, $square_size);
			imagecopy($img_final, $img_thumb_square, 0, 0, $x_src, $y_src, $square_size, $square_size);
		} else if ($thumb_height > $thumb_width) {
			// landscape
			$x_src = 0;
			$y_src = ($thumb_height - $square_size) / 2;
			$img_final = imagecreatetruecolor($square_size, $square_size);
			imagecopy($img_final, $img_thumb_square, 0, 0, $x_src, $y_src, $square_size, $square_size);
		} else {
			$img_final = imagecreatetruecolor($square_size, $square_size);
			imagecopy($img_final, $img_thumb_square, 0, 0, 0, 0, $square_size, $square_size);
		}
		
		switch ($img_type) {
			case "image/pjpeg":
			@imagejpeg($img_final, $thumb);
			break;
			case "image/png":
			@imagepng($img_final, $thumb);
			break;
			case "image/jpeg":
			@imagejpeg($img_final, $thumb);
			break; 
			case "image/jpg":
			@imagejpeg($img_final, $thumb);
			break;
			case "image/gif":
			@imagegif($img_final, $thumb);
			break;
		}
	}
	
	function format_bytes($size) 
	{
		$units = array(' B', ' KB', ' MB', ' GB', ' TB');
		for ($i = 0; $size >= 1024 && $i < 4; $i++) $size /= 1024;
		return round($size, 2).$units[$i];
	}
	
	function getcookie($name, $id)
	{
		if (!isset($_COOKIE[$name]) || ($_COOKIE[$name] == "") )
		{
			setcookie($name, $id, time() + 3600 * 24 * 30, "/", "namavosinh.vn");
		}
		else 
		{
			$product_cookie_cache 	= explode(",", $_COOKIE[$name]);
			$bol = "";
			foreach ($product_cookie_cache as $value)
			{
				if ($id === $value)
				{
					$bol .= 1;
					break;
				}
			}
			
			if ($bol == 1)
			{
				$product_cookie = $_COOKIE[$name];
			}
			else 
			{
				$product_cookie = $_COOKIE[$name].",".$id;
			}
			setcookie($name, $product_cookie, time() + 3600 * 24, "/", "namavosinh.vn");
		}
	}
	
	function rrmdir($dir) 
	{
		if (is_dir($dir)) 
		{
			$objects = scandir($dir);
			foreach ($objects as $object) 
			{
				if ($object != "." && $object != "..") 
				{
					if (filetype($dir."/".$object) == "dir") rmdir($dir."/".$object); else unlink($dir."/".$object);
				}
			}
			reset($objects);
			rmdir($dir);
		}
	}
}